1. Field of the Invention
The present invention is directed toward the field of network software, and more particularly towards implementing an application remote from a computer.
2. Art Background
Prior art techniques exist to “remote” applications. In general, a remote application is an application that runs on a first computer but provides the functionality of the application to a second computer (e.g., implements a user interface) remote from the first computer. Remote application techniques have been used in client-server environments, wherein the application programs are stored on a server, and the client computers accesses the server to obtain functionality from the applications. The X Windows environment remotes applications such that thin client computers, or terminals, access a computer, such as a server, over a network to obtain the application's functionality at the terminals. For example, a server may host a word processing application. The thin client computer or terminal communicates with a server to operate the word processing program. The application program, running on the server, implements the user interface at the local computer for the underlying application program.
One issue that arises when implementing remote applications is that the remote applications require specific knowledge about the display characteristics of the client computer or terminal. If the client-server environment has many client computers, then the remote application must know the requirements of each client computer. This limits the types of devices or computers that the remote application can support, or significantly increases complexity of the server software to support the various types of devices. Therefore, it is desirable to develop software that permits a remote application to operate on a client computer or device without requiring the remote application to have any knowledge of the client's configuration.
Typically, applications implement a user interface using a user interface tool kit, sometimes referred to as a widget set, a rendering engine, and underlying hardware to display the user interface. The application provides parameters to the user interface tool kit based on specifics of the application. For example, some applications define buttons, toolbars, menus, etc. for use with the application. The user interface tool kit provides specific layout information for the application requirements. For example, the user interface tool kit may specify placement of the buttons, toolbars and menus used in the application. This layout is sometimes referred to as a logical layout of the user interface. The rendering engine, which receives the logical layout from the user interface tool kit, defines how to translate the logical layout to a physical representation for rendering on an output display. For example, if the remote computer display is a graphics display, then the rendering engine may convert digital data to RGB data for storage in a frame buffer for rendering on the output display. The user interface hardware may include, for a graphics display, a frame buffer, graphics processor and raster scan display for rendering pixel data.
Typically, to remote an application, the application and user interface tool kit software are run on the remote computer (i.e., the computer running the remote application). The local computer (i.e., the computer providing the user interface) includes the rendering engine and display hardware. An interface between the remote computer and local computer defines specific parameters for displaying information on the local computer (e.g., screen resolution, graphics or textual display, color palettes supported, etc.). Using this interface, the remote application specifies a logical layout supported by the physical rendering of the local client. For example, the remote application may specify, in a logical layout, the toolbar at the top of the output display. In order to ensure that the toolbar is readable, the remote application knows the overall resolution of the output display on the local client. The rendering engine at the local client translates the data for the toolbar, and stores the graphics data in the frame buffer at the local client. The contents of the frame buffer are thereafter rendered on the local client's output display.
Internet technology uses markup languages and Web browsers to display Web applications on local computer displays. Using Web browser technology, the application running on the web server does not need to know the specifics of the client display characteristics. However, the application logic is typically tuned to a specific display resolution, particularly if the web page contains graphic information. Often times Web applications specify to the user at the local computer a viewing resolution for the Web site because the Web application was designed for that specific resolution. Thus, Web technology still requires the application to have specific knowledge of the display characteristics of a computer that displays Web pages. In addition, user interfaces on the Web are very disconnected, so as to require splitting the application logic between the server and the client (e.g., Javascript). Alternatively, the Web applications are not very smooth and interactive applications. Although Web technology may be useful because most users view the information from desktop or notebook computers with a pre-defined resolution, the technology is not effective for use in systems that integrate devices with different types of displays. Accordingly, it is desirable to develop a remote application technology that permits using local client displays for remote applications regardless of the type of display at the local client.